Multiple programs are known to be encoded and sent over a common channel having a fixed limited bandwidth using a technique known as statistical multiplexing. Statistical multiplexing is a type of communication link sharing in which a communication channel is typically divided into an arbitrary number of digital channels or data streams. The multiple programs may be statistically multiplexed using a multiplexer (often referred to as a STAT MUX), a rate controller and a plurality of encoders. The communication channel is known to have a bandwidth limitation. Because the multiple programs often have a variable bit rate (VBR) and the communication channel has a bandwidth limitation, bit distribution over the multiple programs is known to be problematic.
In typical operation, the transmission bit rates for each of the encoders is a delayed version of the encoding bit rates for the same encoder by a predetermined delay. The predetermined delay may be, for instance, 1.5 seconds and is an initial delay from an encoding time (a current program clock reference (PCR)) to a decoding time (the decode time stamp (DTS) of the first encoding frame). This predetermined delay is known as a system delay.
The multiplexer may change transmission bit rates upon requests from the encoders through a minimum bit rate request and a maximum bit rate request. The minimum bit rate request informs a rate controller of a lowest rate at which video may be sent that allows receipt of complete frames at a decoder prior to decoding. The maximum bit rate informs the rate controller of a highest rate at which video may be sent to the decoder. The encoders retain all encoding bit rates received in the past predetermined delay and uses this information to calculate a target frame size and an initial quantization parameter (QP) level for each frame to be encoded. As soon as an encoder finishes encoding a frame, the encoder updates a current need parameter. The encoders also use a current transmission bit rate to regulate the amount of bits transferred to the multiplexer and update the minimum bit rate request and the maximum bit rate request at each interrupt. An interrupt is triggered as soon as a bit rate information message arrives at the encoder.
Each encoder calculates the need parameter based on the complexities of past encoded frames and look-ahead activities of the incoming frames. The complexity of a past encoded frame is defined by the product of the bits used for this frame and the average quantizer for this frame. The multiplexer allocates more bits (bandwidth) for the encoders having video input of higher complexity while maintaining the constant group bandwidth in an effort to keep all the encoders running at the same QP level.
In order to keep all encoders running at the same perceptible quality levels (not necessary the same QP levels), the encoders are known to add a need parameter bias to the need parameter. The need parameter bias is a perceptibly determined constant across all encoders with video input of motion pictures. With the constant need parameter bias, the encoders having video input of lower complexity run at lower QP levels that mitigate the compression artifacts. Although the encoders having video input of higher complexity may run at higher QP levels, the compression artifacts are obscured somewhat by the high video complexity.
Although the constant need parameter bias scheme works as expected when all the encoders have dynamic video input, whenever any of the encoders has static video input (video that is stable and has low complexity), such as a slate, the encoder cannot produce enough bits to fill the allocated bit rate. The unused bandwidth is thus wasted.